package com.jf.cloud.service.sysmanager.common.db;

import java.util.HashMap;
import java.util.Map;

/**
 * TODO   特殊查询的类型 
 * @author ouyang 创建时间：2012-03-12 02:06:48
 */
public enum FindType {
   LIKE,
   LIKE_LEFT, // 即 百分号 在左边
   LIKE_RIGHT,
   IN,
   IS_NULL,
   NOT_NULL,
   NOT_EQUAL, //不等于
   NOT_IN,
   MORE,  //大于
   LESS, 
   MORE_EQUAL, // 大于等于  >= 
   LESS_EQUAL, // 小于等于 <=
   OR; //  分组OR
  
   
   public final static String NO_CONTANT ="non_";  // 不添加入查询条件
   public static String FIND_FLAG ="$";  // 特殊查询 标示符号
   public static String OR_FLAG ="@";    // or 查询标示 （a=b or c= b）
   public static String LIKE_OR_FLAG ="&";// or like 标示 （ a like '%?%' or b like '%?%'）
   
   /**
    * 特殊查询 字段前缀
    */   
   public static String LIKE_ ="_LIKE"+FIND_FLAG;
   public static String LIKE_LEFT_ ="_LIKE_LEFT"+FIND_FLAG;
   public static String LIKE_RIGHT_ ="_LIKE_RIGHT"+FIND_FLAG;
   public static String IN_="_IN"+FIND_FLAG;
   public static String IS_NULL_ ="_IS_NULL"+FIND_FLAG;
   public static String NOT_NULL_ ="_NOT_NULL"+FIND_FLAG;
   public static String NOT_EQUAL_ ="_NOT_EQUAL"+FIND_FLAG;
   public static String NOT_IN_ ="_NOT_IN"+FIND_FLAG;
   public static String MORE_ ="_MORE"+FIND_FLAG;
   public static String LESS_ ="_LESS"+FIND_FLAG;
   public static String MORE_EQUAL_ ="_MORE_EQUAL"+FIND_FLAG;
   public static String LESS_EQUAL_ ="_LESS_EQUAL"+FIND_FLAG;
   public static String OR_ ="_OR"+FIND_FLAG;
   
   /**
    * 前缀的集合 保存和上面的变量一致
    */
   public static Map<String, String> flagMap = new HashMap<String, String>();
   static{
	   flagMap.put("LIKE_", LIKE_);
	   flagMap.put("LIKE_LEFT_", LIKE_LEFT_);
	   flagMap.put("LIKE_RIGHT_", LIKE_RIGHT_);
	   flagMap.put("IN_", IN_);
	   flagMap.put("IS_NULL_", IS_NULL_);
	   flagMap.put("NOT_NULL_", NOT_NULL_);
	   flagMap.put("NOT_EQUAL_", NOT_EQUAL_);
	   flagMap.put("NOT_IN_", NOT_IN_);
	   flagMap.put("MORE_", MORE_);
	   flagMap.put("LESS_", LESS_);
	   flagMap.put("MORE_EQUAL_", MORE_EQUAL_);
	   flagMap.put("LESS_EQUAL_", LESS_EQUAL_);
	   flagMap.put("OR_", OR_);
   }
   /**
    * 处理 分组查询的 OR (列举了几个常用的)
    * 这里仅处理 不同字段的 or查询 
    * 如果为相同字段的 or查询 请转换为 in
    */
   public static String GROUP_DATE =OR_FLAG+"DATE";
   public static String GROUP_PRICE=OR_FLAG+"PRICE";
   public static String GROUP_TOTAL_PRICE=OR_FLAG+"TOTAL_PRICE";
   public static String GROUP_NUM=OR_FLAG+"NUM";
   
   /**
    * like 查询的 分类 
    */
   public static String ALL ="ALL";
   public static String LEFT ="L"; // 左 like
   public static String RIGHT ="R"; //  右
}
